home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / bbsutil / hsrc_117.zip / SETHDR.C < prev    next >
Text File  |  1990-08-21  |  3KB  |  119 lines

  1. #include "msgg.h"
  2. #include "twindow.h"
  3. #include "keys.h"
  4. #include "headedit.h"
  5.  
  6. #include "headid.h"
  7.  
  8.  
  9.  
  10. int pascal set_header (char type,char *odate,char *ofrom,char *oto) {
  11.  
  12.     static char temp[86];
  13.     word tempmess;
  14.     word tempno;
  15.     char wasprivate=0;
  16.     int pp;
  17.     char oldfrom[36];
  18.     char oldto[36];
  19.     char olddate[36];
  20.  
  21.     if(ofrom) strcpy(oldfrom,ofrom);
  22.     if(oto)strcpy(oldto,oto);
  23.     if(odate)strcpy(olddate,odate);
  24.     tempmess=messno;
  25.     tempno=nomess;
  26.     nomess++;
  27.     messno=nomess;
  28.  
  29.     if (type & INFOONLY) {
  30.         strcpy(msg.to,"All");
  31.         strcpy(msg.subj,"Miscellaneous");
  32.         msg.d_point=curaddress.point;
  33.         msg.dest=curaddress.node;
  34.         msg.dest_net=curaddress.net;
  35.         msg.d_zone=curaddress.zone;
  36.         strcpy(to_domain,curaddress.domain);
  37.     }
  38.     else if (type!=NOINFO) {
  39.         strcpy(msg.to,msg.from);
  40.         if (strncmp(msg.subj,"Re: ",4)) {
  41.             msg.subj[58]=0;
  42.             strcpy(temp,msg.subj);
  43.             sprintf(msg.subj,"Re: %s",temp);
  44.         }
  45.         msg.dest=msg.orig;
  46.         msg.dest_net=msg.orig_net;
  47.         msg.d_zone=msg.o_zone;
  48.         msg.d_point=msg.o_point;
  49.     }
  50.     msg.times=0;
  51.     msg.o_zone=curaddress.zone;
  52.     msg.orig=curaddress.node;
  53.     msg.orig_net=curaddress.net;
  54.     msg.o_point=curaddress.point;
  55.     strcpy(msg.date,fidodate());
  56.     strcpy(msg.from,name);
  57.     if ((msg.attr & MSGPRIVATE) && !(currarea->attr & ECHO)) wasprivate++;
  58.     msg.attr=MSGLOCAL;
  59.     msg.m_attr=0;
  60.     if ((currarea->attr & NET) || (currarea->attr & ALTERNATE)) {
  61.         msg.attr=(defaultattr | MSGLOCAL) & (~MSGSENT);
  62.         msg.m_attr = msg.m_attr | MSGNET;
  63.     }
  64.     if (wasprivate) msg.attr=msg.attr | MSGPRIVATE;
  65.     if ((currarea->attr & ECHO) || (currarea->attr & ALTECHO)) msg.m_attr = msg.m_attr | MSGECHO;
  66.     if (msg.d_zone==0) msg.d_zone=curaddress.zone;
  67.  
  68.     if (edit_mess(2)==ESC) {
  69.         messno=tempmess;
  70.         nomess=tempno;
  71.         return (ESC);
  72.     }
  73.     messno=tempmess;
  74.     nomess=tempno;
  75.  
  76.     strcpy(temp,"MSGTMP.INF");
  77.     unlink(temp);
  78.  
  79.     if(makeinfo) {
  80.         if((pp=(_open(temp,O_RDWR | O_BINARY | O_DENYWRITE)))==-1)
  81.           if((pp=(creat(temp,S_IWRITE)))==-1) {
  82.             error_message(" Cannot open info file... ");
  83.             pause();
  84.             return(F10);
  85.         }
  86.         if((currarea->attr & NET) || (currarea->attr & ALTERNATE)) {
  87.             ffprintf(pp,"NET\r\n");
  88.             ffprintf(pp,"ORIG %01u:%01u/%01u.%01u@%s\r\n",
  89.                 msg.o_zone,msg.orig_net,msg.orig,msg.o_point,curaddress.domain);
  90.             ffprintf(pp,"DEST %01u:%01u/%01u.%01u@%s\r\n",
  91.                 msg.d_zone,msg.dest_net,msg.dest,msg.d_point,to_domain);
  92.         }
  93.         if(!(type & INFOONLY)) {
  94.             ffprintf(pp,"REPLY\r\n");
  95.             ffprintf(pp,"FROM %s\r\n",oldfrom);
  96.             ffprintf(pp,"DATE %s\r\n",olddate);
  97.             ffprintf(pp,"WASTO %s\r\n",oldto);
  98.         }
  99.         if(type & ECHO2NET) ffprintf(pp,"ECHO2NET\r\n");
  100.         else {
  101.             if((currarea->attr & ECHO) || (currarea->attr & ALTECHO)) {
  102.                 ffprintf(pp,"ECHO\r\n");
  103.             }
  104.         }
  105.         ffprintf(pp,"TO %s\r\n",msg.to);
  106.         ffprintf(pp,"SUBJ %s\r\n",msg.subj);
  107.         ffprintf(pp,"WRITER %s\r\n",msg.from);
  108.         ffprintf(pp,"AREANAME %s\r\n",currarea->name);
  109.         ffprintf(pp,"AREA# %01u\r\n",currarea->number);
  110.         ffprintf(pp,"AREAATTRIB %u\r\n",currarea->attr);
  111.         ffprintf(pp,"MSGATTRIB %u\r\n",msg.attr);
  112.         ffprintf(pp,"MSGATTRIB2 %u\r\n",msg.m_attr);
  113.         ffprintf(pp,"READER HeadEdit %s",VERSION_NUMBER);
  114.         _close(pp);
  115.     }
  116.  
  117.     return (F10);
  118. }
  119.